/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package info.toegepaste.www;

import info.toegepaste.www.beans.Alumnus;
import info.toegepaste.www.beans.Bedrijf;
import info.toegepaste.www.beans.Functie;
import info.toegepaste.www.beans.Inschrijving;
import info.toegepaste.www.beans.Richting;
import info.toegepaste.www.beans.Werkstatus;
import info.toegepaste.www.dataaccess.DAAccount;
import info.toegepaste.www.dataaccess.DAAlumnus;
import info.toegepaste.www.dataaccess.DABedrijf;
import info.toegepaste.www.dataaccess.DAFunctie;
import info.toegepaste.www.dataaccess.DAInschrijving;
import info.toegepaste.www.dataaccess.DARichting;
import info.toegepaste.www.dataaccess.DAWerkstatus;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Martine
 */
@WebServlet(name = "ZoekServlet", urlPatterns = {"/ZoekServlet"}, initParams = {
    @WebInitParam(name = "url", value = "jdbc:mysql://localhost/lesson"),
    @WebInitParam(name = "login", value = "dba"),
    @WebInitParam(name = "password", value = "sql")})
public class ZoekServlet extends HttpServlet {

    DAAccount daaccount = null;
    DAAlumnus daalumnus = null;
    DARichting darichting = null;
    DAWerkstatus dawerkstatus = null;
    DAInschrijving dainschrijving = null;
    DABedrijf dabedrijf = null;
    DAFunctie dafunctie = null;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    public void destroy() {
        try {
            if (daaccount != null) {
                daaccount.close();
            }
            if (daalumnus != null) {
                daalumnus.close();
            }
            if (darichting != null) {
                darichting.close();
            }
            if (dawerkstatus != null) {
                dawerkstatus.close();
            }
            if (dainschrijving != null) {
                dainschrijving.close();
            }
            if (dabedrijf != null) {
                dabedrijf.close();
            }
            if (dafunctie != null) {
                dafunctie.close();
            }

        } catch (SQLException e) {
        }
    }

    @Override
    public void init() throws ServletException {
        try {
            String url = getInitParameter("url");
            String password = getInitParameter("password");
            String login = getInitParameter("login");


            if (daaccount == null) {
                daaccount = new DAAccount(url, login, password);
            }
            if (daalumnus == null) {
                daalumnus = new DAAlumnus(url, login, password);
            }
            if (darichting == null) {
                darichting = new DARichting(url, login, password);
            }
            if (dawerkstatus == null) {
                dawerkstatus = new DAWerkstatus(url, login, password);
            }
            if (dainschrijving == null) {
                dainschrijving = new DAInschrijving(url, login, password);
            }
            if (dabedrijf == null) {
                dabedrijf = new DABedrijf(url, login, password);
            }
            if (dafunctie == null) {
                dafunctie = new DAFunctie(url, login, password);
            }


        } catch (Exception e) {
            throw new ServletException(e);
        }
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        RequestDispatcher rd = null;

        //Naar zoekpagina
        if (request.getParameter("adminzoekButton") != null) {
            ArrayList<Richting> richtingen = darichting.getAlleRichtingen();
            request.setAttribute("richtingen", richtingen);

            ArrayList<Werkstatus> werkstatusssen = dawerkstatus.getAlleWerkstatussen();
            request.setAttribute("werkstatussen", werkstatusssen);

            rd = request.getRequestDispatcher("adminzoekpagina.jsp");
        }
        //Zoeken op naam (voornaam en achternaam)
        if (request.getParameter("zoekAlumniOpNaamButton") != null) {
            try {
                request.setAttribute("alumni", daalumnus.zoekAlumniOpNaam(request.getParameter("naam")));
            } catch (SQLException ex) {
                Logger.getLogger(ZoekServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
            rd = request.getRequestDispatcher("adminresultaatpagina.jsp");
        }

        //Zoeken op afstudeerjaar
        if (request.getParameter("zoekAlumniOpJaarButton") != null) {
            try {
                request.setAttribute("alumni", daalumnus.zoekAlumniOpAfstudeerjaar(request.getParameter("afstudeerjaar")));
            } catch (SQLException ex) {
                Logger.getLogger(ZoekServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
            rd = request.getRequestDispatcher("adminresultaatpagina.jsp");
        }

        //Zoeken op werkstatus
        if (request.getParameter("zoekAlumniOpWerkstatusButton") != null) {
            Werkstatus werkstatus = new Werkstatus(Integer.parseInt(request.getParameter("werkstatus")));
            try {
                request.setAttribute("alumni", daalumnus.zoekAlumniOpWerkstatus(werkstatus));
            } catch (SQLException ex) {
                Logger.getLogger(ZoekServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
            rd = request.getRequestDispatcher("adminresultaatpagina.jsp");
        }

        //Zoeken op richting
        if (request.getParameter("zoekAlumniOpRichtingButton") != null) {
            Richting richting = new Richting(Integer.parseInt(request.getParameter("richting")));
            try {
                request.setAttribute("alumni", daalumnus.zoekAlumniOpRichting(richting));
            } catch (SQLException ex) {
                Logger.getLogger(ZoekServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
            rd = request.getRequestDispatcher("adminresultaatpagina.jsp");
        }
        //Detailpagina
        if (request.getParameter("details") != null) {
            int id = Integer.parseInt(request.getParameter("details"));
            Alumnus alumnus = new Alumnus();
            ArrayList<Inschrijving> inschrijvingen = new ArrayList<Inschrijving>();
            try {
                inschrijvingen = dainschrijving.getInschrijvingenPerAlumnus(id);
                alumnus = daalumnus.getAlumnus(id);
            } catch (SQLException ex) {
                Logger.getLogger(ZoekServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
            request.setAttribute("alumnus", alumnus);
             request.setAttribute("inschrijvingen", inschrijvingen);
             ArrayList<Functie> functies = dafunctie.getAlleFuncties();
            request.setAttribute("functies", functies);

            ArrayList<Bedrijf> bedrijven = dabedrijf.getAlleBedrijven();
            request.setAttribute("bedrijven", bedrijven);
             rd = request.getRequestDispatcher("admindetailpagina.jsp");
        }
        rd.forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
